iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 22
1
自我挑戰組

艾利森踏上工程師之路的心路歷程系列 第 22

SQL Server 管理與開發 學習筆記

  • 分享至 

  • xImage
  •  

我們資料庫課程講師是來自於曹祖聖老師

https://ithelp.ithome.com.tw/upload/images/20200928/20130303djVtgpaYTT.png

我記得上課的時候是講義搭配一堆的題目練習,每天一下課就會有排山倒海而來的一堆題目嚇死我了

https://ithelp.ithome.com.tw/upload/images/20200928/20130303RFQM9ea0Ui.png

例如這樣上面還有一堆題目,非常充分的練習,我想我可能作夢都在不斷的select from where一直查資料

然後有時候題目解答出來之後,也不知道這樣是不是正確的,只要問一下大家答案,如果超過三個以上答案一樣大概就是對的吧哈哈哈

隔天上課老師會在幫我們解一些比較難的題目,然後老師三兩下鍵盤搭拉搭拉答案就出來了,老師果然就是老師

雖然學了很多語法,但常用的還是那幾個,於是想講一個範例覺得蠻特別的

首先我的資料長這樣

SELECT ca.CategoryName,od.Quantity,YEAR(o.OrderDate) AS orderyear
FROM Categories AS ca
INNER JOIN Products AS p ON p.CategoryID=ca.CategoryID
INNER JOIN Order Details AS od ON od.ProductID=p.ProductID
INNER JOIN Orders AS o ON o.OrderID=od.OrderID

並且假設我要把每個類別的資料按照年份加總起來,將資料轉為橫向處理可以怎麼做?

https://ithelp.ithome.com.tw/upload/images/20200928/20130303hQmI6D6Xta.png

/images/emoticon/emoticon13.gif

可以利用PIVOT來扭轉資料,面對數筆有意義資料要匯總成橫式資料時,讓資料呈現上更貼近人性。

WITH t1 AS
(
	SELECT ca.CategoryName,od.Quantity,YEAR(o.OrderDate) AS orderyear
	FROM Categories AS ca
	INNER JOIN Products AS p ON p.CategoryID=ca.CategoryID
	INNER JOIN [Order Details] AS od ON od.ProductID=p.ProductID
	INNER JOIN Orders AS o ON o.OrderID=od.OrderID
)
SELECT CategoryName,[1996],[1997],[1998]
FROM t1
PIVOT(
	SUM(Quantity) FOR orderyear in ([1996],[1997],[1998])
)AS pvt

https://ithelp.ithome.com.tw/upload/images/20200928/201303034tzb1LKPEQ.png


上一篇
Line Bot 學習筆記 (2/2)
下一篇
前端進階課程(CSS動畫、RWD) 學習筆記
系列文
艾利森踏上工程師之路的心路歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言